import os
import pyzipper


def create_fully_encrypted_zip(source_dir, zip_path, password):
    """
    创建完全加密的ZIP文件，文件列表和内容均被加密
    不输入密码无法查看任何文件信息
    """
    # 关键配置：使用AES-256加密
    with pyzipper.AESZipFile(
            zip_path,
            'w',
            compression=pyzipper.ZIP_DEFLATED,
            encryption=pyzipper.WZ_AES,  # 启用AES加密
    ) as zf:
        zf.setpassword(password.encode('utf-8'))

        # 获取源目录的基本名称
        base_dir = os.path.basename(source_dir)

        # 遍历目录并添加文件
        for root, _, files in os.walk(source_dir):
            for file in files:
                file_path = os.path.join(root, file)
                # 计算在ZIP中的相对路径
                arcname = os.path.join(base_dir, os.path.relpath(file_path, source_dir))
                zf.write(file_path, arcname)
                print(f"已添加: {arcname}")

    print(f"完全加密ZIP已创建: {zip_path}")
    print("特性: 不输入密码无法查看文件列表和内容")


if __name__ == "__main__":
    # 示例用法
    create_fully_encrypted_zip(
        source_dir="win",
        zip_path="1.zip",
        password="StrongPass!2023"
    )
